Field of the Invention
Embodiments of the present invention relate generally to computer processing and, more specifically, to setting a PCIE Device ID.
Description of the Related Art
The Peripheral Component Interconnect Express (PCIE) Device ID (DEVID) is a 16-bit number that uniquely identifies a computer hardware device to the software. In general, these 16-bit numbers can be used to identify a brand or a stock-keeping unit (SKU). There are a number of techniques that can be used to implement the DEVIDs on the hardware: hard-coding the DEVIDs; hard-coding a subset of the bits of a DEVID and including binary strap bits for another subset of the bits of the DEVID; replacing binary strap bits with multi-level straps; or fusing certain bits instead of hard-coding those bits. Each such approach has certain advantages and disadvantages.
As mentioned, some approaches to setting the DEVID use strap bits, or straps, to set the DEVID. Straps are board-level resistors that, in one implementation, can be pulled up or pulled down so that they register a 1 or a 0, and the 1 or 0 bits are detected set the DEVID. In other embodiments, a voltage level could be measured and a number of different strap values could be determined by the measured voltage level. Alternatively, a current could be measured through a resistor, allowing the strap value to be specified by the resistance. Or, the strap value could be configured by setting the charge time of a simple RLC circuit. The value of a strap can be changed per board, so that different customers who purchase the boards can receive the same chip but with different specifications. The chip is placed into the board and connects to the straps, and then the values of the straps are used to communicate the DEVID to the chip.
Some approaches to setting the DEVID use fuses. Fuses are generally a part of the chip. A fuse can be a piece of wire in the chip that is set so that the fuse pulls either high or low to simulate a 1 or 0. In that sense, fuses work similarly to straps, but fuses are an internal component of the chip. If a chip that uses fuses is plugged into a board, then that chip always reports the same DEVID. The DEVID, once set by the fuses, is generally not able to be altered by adjusting the values of any straps on the board. Therefore using fuses instead of straps provides more security against counterfeiting chips.
One use of DEVIDs is that computer chips, such as computer graphics chips in one example, can use a separate DEVID for each generation of a chip. Thus a graphics chip can be manufactured and that chip can be used for different product lines. Each product line may have a separate DEVID, and that DEVID identifies the chip to the software. For example, one DEVID may designate that this chip is a low-end product, and another DEVID may designate that this chip is a high-end product. Therefore, the same chip can be recognized as a low-end chip or a high-end chip depending on what value the DEVID is set at. With this functionality, manufactures can use one chip design for each chip they manufacture, but can sell those chips as multiple different products, each with different capabilities.
The manufacturers can use any of the techniques listed above for setting the DEVID of each chip. One solution for setting a DEVID is to use six bits of straps and 10 bits of fuses to set the 16-bit DEVID. However, customers who buy the chips, or other third parties, know how to strap the board, and they can figure out that those six strap bits can be used to set the DEVID to match the DEVID of a number of different products, not necessarily the DEVID set and intended by the manufacturer. Therefore, a customer can buy a low-end chip and use straps to make the chip identify (with the DEVID) as a high-end chip. A user who attempts to use the chip for high-end operations may experience poor performance because the chip is actually a low-end chip with a counterfeited DEVID. Allowing customers to set the DEVID with these six straps thus creates gray market and black market opportunities for unscrupulous resellers and can present performance issues to the end user. This is one disadvantage of using straps to set all or a part of the DEVID.
In addition, another potential disadvantage with using straps is that straps can also take up die space (straps also need a pad to connect to on the chip). Also, if six straps are used for the DEVID then that leaves fewer straps available for other purposes.
Another existing technique, as mentioned above, is hard-coding the DEVIDs. This provides a more secure product that is more difficult for customers to counterfeit that using straps. However, one downside to hard-coding the DEVIDs is that this is inflexible for bring-up engineers who now cannot set the DEVID to a different value for testing. In addition, this solution does not allow a customer to perform a field upgrade of already-purchased chips. For example, a customer may purchase 10,000 chips and, after a period of time, have some chips left over that they have not sold. If an upgraded version of that chip is released (i.e., the same chip but with a new DEVID), the customer may want to rebrand the chip and sell the chip as the upgraded version. If straps are used, the manufacturer can tell the customer how to strap the new DEVID, and the software will recognize the new DEVID and preferably turn on new features. If DEVIDs are hard-coded, this flexibility to rebrand is taken away from customers.
In conclusion, a major drawback to conventional approaches is that the techniques that provide flexibility for engineers who develop and upgrade devices can also make counterfeiting those devices easier. Straps can provide flexibility, but also increase the chances of counterfeiting. Another drawback is that straps can take up valuable die area.
Accordingly, what is needed in the art is a more effective way to implement DEVIDs on hardware devices, such as graphics processing units and other types of processing units.